12

» WarCraft 3 / Имитация третьего ресурса заместо пищи

Сделай через таблицу лидеров или как-то так она на русском называется. Там все нужные ресурсы и пропиши
12

» WarCraft 3 / Как прикрепить область к юниту?

Делаешь так, раз в 0.05 секунд добавляй всех противников (или кого нужно) в группу в нужном радиусе от героя и переноси их за этот радиус.
12

» WarCraft 3 / Движение по кругу

rsfghd, Да), удивлён, что кто-то вспомнил

rsfghd, не помогло, они всё равно движутся к герою, а не вокруг него

Я прикрепил карту и вернул всё к тому, как изначально написал
12

» WarCraft 3 / Условие - герой имеет не изученную способность X

Можно взять группу и добавлять в неё юнитов, ты же сам решаешь у кого будет способность, потом прокручиваешь всю группу и записываешь на каждого юнита нужное число
12

» WarCraft 3 / Способности и алгоритмы на заказ

Название : Laughing Skull
Метод : Jass
MUI : Да
Цель : Боевая единица
Количество уровней : 3
Дальность применения : 900
Описание :
Выпускает череп, который отскакивает по 4-6 целям и оглушает их на 2 секунды (1 секунда на героя)
Поиск цели для отскока - 900
12

» WarCraft 3 / Отлов определенных атак

Как-то так
function BlockDamageTest takes nothing returns nothing
    local timer BlockDamageTimer = GetExpiredTimer()
    local integer tid = GetHandleId(BlockDamageTimer)
    local unit u = LoadUnitHandle(udg_hash, tid, StringHash("Target"))
    local real Damage = LoadReal(udg_hash, tid, StringHash("Damage"))
    
    call SetUnitState(u, UNIT_STATE_LIFE, (GetUnitState(u, UNIT_STATE_LIFE) + Damage))
    call UnitRemoveAbility(u, 'A005')
    
    call DestroyTimer(BlockDamageTimer)
    call FlushChildHashtable(udg_hash, tid)
        
    set BlockDamageTimer = null
    set u = null
endfunction

function Damaged_Handler_Test takes unit source, unit target, real dmg returns nothing
    local timer BlockDamageTimer = CreateTimer()
    local integer tid = GetHandleId(BlockDamageTimer)
    
    if  IsUnitType(source, UNIT_TYPE_RANGED_ATTACKER) == true  then
        call UnitAddAbility(target, 'A005')
        call TimerStart(BlockDamageTimer, 0.01, false, function BlockDamageTest)
        call SaveUnitHandle(udg_hash, tid, StringHash("Target"), target)
        call SaveReal(udg_hash, tid, StringHash("Damage"), dmg)
    endif 
    
    set source = null
    set target = null
    set BlockDamageTimer = null
endfunction

function Damage_Event_Test takes nothing returns nothing
    call DisableTrigger( GetTriggeringTrigger( ) )
    call Damaged_Handler_Test( GetEventDamageSource( ), GetTriggerUnit( ), GetEventDamage( ) )
    call EnableTrigger( GetTriggeringTrigger( ) )
endfunction

//===========================================================================
function InitTrig_DamageTest takes nothing returns nothing
    local group gMain = CreateGroup()
    local unit uTemp 
    local trigger trTemp = CreateTrigger()
    
    if true then
        call GroupEnumUnitsInRect( gMain, bj_mapInitialPlayableArea, null )
        loop
            set uTemp = FirstOfGroup( gMain )
            exitwhen uTemp == null
            call TriggerRegisterUnitEvent( trTemp, uTemp, EVENT_UNIT_DAMAGED )
            call GroupRemoveUnit( gMain, uTemp )
        endloop
        call TriggerAddAction( trTemp, function Damage_Event_Test )
    endif
    
    set gMain = null
    set uTemp = null
    set trTemp = null
endfunction

Если нужен конкретный тип войск, которые будут блокировать урон то ставь условие с source
12

» WarCraft 3 / Счётчик Хендлов на WURST

GetLocalPlayer, карта изначально была не на вурст, а на гуи, и очень сильно лагает, хочу посмотреть на сколько всё плохо

А если точнее. то в какой-то момент карта застывает и я хочу посмотреть, может в какой-то момент утечки сильно увеличиваются
12

» WarCraft 3 / Счётчик Хендлов на WURST

doPeriodically(0.05) hc -> это цикл с вейтом или таймер на функцию?
Execute an action periodically. The callback has to be destroyed manually.
Example use: | doPeriodically(0.5) cb -> | if i > 10 | destroy cb
function doPeriodically(real time, CallbackPeriodic cb) returns CallbackPeriodic
defined in package ClosureTimers

Вот что написано о нём

Я понял, что всё, что происходит после doPeriodically(0.05) hc -> не работает
12

» WarCraft 3 / Счётчик Хендлов на WURST

я так понимаю у тебя цикл от 0 до 12, в котором появился периодичный цикл каждые 0.05 секунд?
да
то есть цикл для других игроков срабатывать не должен по идее, если у тебя не создаются отдельные потоки на игроков
Почему? Цикл от 0 до 12 для того и создан, чтобы отдельно для каждого игрока и его лидерборда считались хендлы, разве так нельзя?
12

» WarCraft 3 / Счётчик Хендлов на WURST

rsfghd, я поменял код немного, теперь лидербоард создаётся, но значение не меняется с 0
12

» WarCraft 3 / WURST Импорт иконок

GetLocalPlayer:
Это путь к иконке. Внутри папки "imports" твоего Wurst-проекта должна быть папка "ReplaceableTextures" внутри которой 2 папки - "CommandButtons" и "CommandButtonsDisabled". Иконку помещаешь в CommandButtons, а ее DIS версию в CommandButtonsDisabled.
Как ты указывал пути импортируя вещи в редактор так же ты должен организовывать пути внутри папки improt твоего проекта.
Теперь понял, спасибо
12

» WarCraft 3 / WURST Импорт иконок

Proshel_Doty:
при чём тут моделька?
вместо war3mapimported\ надо вписать тот путь у DISBTN иконки
Я это делаю через VSС и поэтому я не понимаю, где в иконке это поменять или добавить? В обычном редакторе я понимаю, а сдесь нет.
12

» WarCraft 3 / WURST Импорт иконок

Proshel_Doty:
путь ReplaceableTextures\CommandButtonsDisabled\
писал по памяти
его кст можно менять в Игровой интерфейс, там и посмотри точно
Proshel_Doty:
путь ReplaceableTextures\CommandButtonsDisabled\
писал по памяти
его кст можно менять в Игровой интерфейс, там и посмотри точно
А как это сделать конкретно? Я перенес модель в папку импортс, после этого мне переименовать её в то что указано выше? Или сохранить куда-то в отдельный файл?
12

» WarCraft 3 / UpgradeDefinition WURST

GetLocalPlayer:
А юнит, которому это улучшение задано, настроен? Данный тип улучшения настраивается в поле самого юнита Бой - Атака - урон (эффект от улучшения)
Да, я проверял с гредайми, которые были в карте, которыю я переделываю изначально, они работают с этим юнитом и на атаку тоже
12

» WarCraft 3 / UpgradeDefinition WURST

GetLocalPlayer:
effectIndex это, собсно, индекс эффекта. Одно улучшение может иметь до 4х эффектов.
Сами типы эффектов можно найти в UpgradeEffectType перечислении внутри UpgradeObjEditing модуля.
Сама ошибка говорит о необходимости использования метода addEffect... вместо setEffectType. Видимо setEffectType считается устаревшей и была изъята из употребления.
Я пытался использовать addEffectApplyAttackUpgradeBonus, но грейд не работает. Улучшение атаки не происходит
12

» WarCraft 3 / Импорт модели в карту на Wurst

GetLocalPlayer:
Ты уверен, что это не из-за указанного пути? Модель .mdx, а путь указываешь .mdl.
Уверен что нигде не устанавливается нулевой размер юнита?
И почему не используешь HeroDefinition, UnitDefinition или BuildingDefinition классы для генерации объектов с человечески названными методами? В setInt, setReal, setString и т.д. очень легко запутаться.
Я переделываю карту, в которой 95% сделано не на вурсте, я лишь частично добавляю новое, поэтому часть юнитов выглядит так, нет юнит нормальных размеров, его тень к примеру видна, но модельные читается. Я посмотрел на пример, который в этой карте уже есть и там пишется mdl, хотя модель mdx, так же происходит и при использовании моделей в обычном редакторе
12

» WarCraft 3 / Почему может не работать триггер?

Что вообще происходит у тебя с триггером? Способность не используется в целом или что?